Шаг 270 - Класс CListBox, подготовка проекта к изучению

Мы уже несколько раз касались этого класса раньше. Теперь пришло время познакомиться с ним подробнее.

Этот класс позволяет нам работать с таким элементом управления Windows, как список. Для работы давайте создадим учебный проект с помощью MFC AppWizard и именем TestList на базе диалогового окна. Поместим на него элемент управления список(CListBox) и свяжем этот элемент управления с помощью Class Wizard с реальным объектом, тип у которого будет Control. Вот так это выглядит.

class CTestListDlg : public CDialog
{
	......
	//Dialog Data
	//{{AFX_DATA(CTestListDlg)
	enum { IDD = IDD_TESTLIST_DIALOG };
	CListBox	m_List;
	//}}AFX_DATA
	......
};

Давайте сразу добавим несколько записей:

BOOL CTestListDlg::OnInitDialog()
{	
	......	
	// TODO: Add extra initialization here
	m_List.AddString("США");
	m_List.AddString("РОССИЯ");
	m_List.AddString("КАНАДА");
	m_List.AddString("ЯПОНИЯ");
	
	return TRUE; // return TRUE  unless you set the focus to a control
}

Это все нам знакомо. Для того, чтобы более подробно изучить этот класс нам придется создать свой класс-наследник от CListBox. Для этого выберем пункт меню New Class. Укажите его тип MFC Class и имя CTestList, базовый класс у него будет CListBox. Теперь нам нужно сделать ссылку на заголовочный файл в классе диалога.

// TestListDlg.h : header file
//

#if !defined(AFX_TESTLISTDLG_H__62DE931C_B7E3_11D4_9414_444553540000__INCLUDED_)
#define AFX_TESTLISTDLG_H__62DE931C_B7E3_11D4_9414_444553540000__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "TestList1.h"

///////////////////////////////
// CTestListDlg dialog

class CTestListDlg : public CDialog
......

Обратите внимание, как VC корректно решил проблему имен. Ведь заголовочный файл с таким именем уже был. Теперь нам нужно заменить ссылку с CListBox на наш класс.

......
class CTestListDlg : public CDialog
{
// Construction
public:
	CTestListDlg(CWnd* pParent = NULL);	// standard constructor

	// Dialog Data
	//{{AFX_DATA(CTestListDlg)
	enum { IDD = IDD_TESTLIST_DIALOG };
	CTestList	m_List;
	//}}AFX_DATA
	......

Скомпилируйте и проверьте. Все готово к испытаниям.

Hosted by uCoz